package com.cl.cloud.auth.tokenEnhancer;

import com.cl.cloud.auth.model.CustomOauth2User;
import com.cl.core.jwt.properties.JwtProperties;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import org.springframework.security.oauth2.provider.token.TokenEnhancer;
import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;

/**
 * @description: 自定义jwt返回参数增强
 * @author: liuzijian
 * @time: 2022-05-16 10:17
 */
public class CustomJwtTokenEnhancer implements TokenEnhancer {

    /**
     * Jwt配置
     */
    private JwtProperties properties;
    /**
     * jwt token转换器（可以用来生成token）
     */
    private JwtAccessTokenConverter converter;

    public CustomJwtTokenEnhancer(JwtProperties jwtProperties, JwtAccessTokenConverter converter) {
        this.properties = jwtProperties;
        this.converter = converter;
    }

    @Override
    public OAuth2AccessToken enhance(OAuth2AccessToken oAuth2AccessToken, OAuth2Authentication oAuth2Authentication) {
        Object user = oAuth2Authentication.getPrincipal();
        if (user instanceof CustomOauth2User) {
            return doCustomOauth2User(oAuth2AccessToken, oAuth2Authentication);
        }
        return oAuth2AccessToken;
    }

    public OAuth2AccessToken doCustomOauth2User(OAuth2AccessToken oAuth2AccessToken, OAuth2Authentication oAuth2Authentication) {
        String test = "slkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwqslkajdklsajdkolfsjakljdolkqjowjeodjqwkelkwq";
        oAuth2AccessToken.getAdditionalInformation().put("test",test);
        return oAuth2AccessToken;
    }
}
